package mybox.engine.heliostat;

import mybox.engine.Circle;
import mybox.engine.File4Qcad;
import mybox.engine.Line;
import mybox.engine.QVector;
import mybox.engine.Rectangle;
import mybox.engine.servo.StandardServo;

public class Zahnradgelenk extends ZwischenBodenSchachtel {
	
		
	StandardServo servo;
	StandardServo lowerZahnradLoch;
	StandardServo upperZahnradLoch;
	
	
	
	Circle testCircle;
	
	public static double cutLineFreiraum=16.5;
	QVector cutLineStart;
	QVector cutLineEnd;
	
	QVector kabellochCenter;
	Circle kabelloch;
	
	Rectangle zrFreiraumLP1;
	Rectangle zrFreiraumLP2;
	
	Line upperGlaettung1;
	Line upperGlaettung2;
	Line upperGlaettung3;
	
	
	public Zahnradgelenk(
			File4Qcad file4qcad, 
			QVector aktPos, 
			double boxLaenge,
			double boxBreite,
			double boxHoehe,
			double bodenOberHoehe,
			double materialDicke, 			
			double zinkungsFaktor,						
			double laserBreite
			) {
		
		
		super(
	    		file4qcad, 
	    		aktPos,
	    		boxLaenge, 
	    		boxBreite, 
	    		boxHoehe, 
	    		bodenOberHoehe, 
	    		materialDicke,
	    		zinkungsFaktor,
		        laserBreite
		        );
		
		
		
		
		cutLineStart = new QVector(super.seitenPlatte1.ecke[2].x-cutLineFreiraum,super.seitenPlatte1.ecke[2].y+materialDicke);
		cutLineEnd = new QVector(cutLineStart.x,cutLineStart.y-boxBreite);
		
		testCircle = new Circle(file4qcad,cutLineStart,3);
		
		kabellochCenter=new QVector(super.seitenPlatte2.center.x-15,super.seitenPlatte2.center.y);
		kabelloch = new Circle(file4qcad,kabellochCenter,4);
		
		boolean ONLYZAHNRADLOCH=true;
				
		
		QVector servocenterUR= new QVector(	super.grundPlatte1.ecke[1].x-HeliostatZahnrad.servoCenter2Front,
											super.grundPlatte1.ecke[1].y+breite/2);
		
		servo = new StandardServo(file4qcad, servocenterUR, !ONLYZAHNRADLOCH);
		
		QVector lowerZahnradLochPos= new QVector(super.grundPlatte2.ecke[1].x-HeliostatZahnrad.servoCenter2Front,
				super.grundPlatte2.ecke[1].y+breite/2);
		
		lowerZahnradLoch =new StandardServo(file4qcad, lowerZahnradLochPos, ONLYZAHNRADLOCH);
		
		QVector upperZahnradLochPos= new QVector(super.grundPlatte3.ecke[1].x-HeliostatZahnrad.servoCenter2Front,
				super.grundPlatte3.ecke[1].y+breite/2);		
		upperZahnradLoch =new StandardServo(file4qcad, upperZahnradLochPos,
				ONLYZAHNRADLOCH);
		
		zrFreiraumLP1=new Rectangle(file4qcad,new QVector(
						this.laengenPlatte1.ecke[2].x-HeliostatZahnrad.azZrFreiraumX,
						this.laengenPlatte1.ecke[2].y-HeliostatZahnrad.azZrFreiraumY
						),
						this.laengenPlatte1.ecke[2]
								);
		
		zrFreiraumLP2=new Rectangle(file4qcad,new QVector(
				this.laengenPlatte2.ecke[2].x-HeliostatZahnrad.azZrFreiraumX,
				this.laengenPlatte2.ecke[2].y-HeliostatZahnrad.azZrFreiraumY
				),
				this.laengenPlatte2.ecke[2]
						);
		upperGlaettung1 = new Line(file4qcad, 
				           new QVector(this.grundPlatte3.ecke[2].x,this.grundPlatte3.ecke[2].y-materialDicke),
		                   new QVector(this.grundPlatte3.ecke[2].x-HeliostatZahnrad.azZrFreiraumX,this.grundPlatte3.ecke[2].y-materialDicke)
							);
		
		upperGlaettung2 = new Line(file4qcad, 
		           new QVector(this.grundPlatte3.ecke[1].x,this.grundPlatte3.ecke[1].y+materialDicke),
                   new QVector(this.grundPlatte3.ecke[1].x-HeliostatZahnrad.azZrFreiraumX,this.grundPlatte3.ecke[1].y+materialDicke)
					);
		
		upperGlaettung3 = new Line(file4qcad, 
		           new QVector(this.grundPlatte3.ecke[1].x-materialDicke,this.grundPlatte3.ecke[1].y+materialDicke),
                   new QVector(this.grundPlatte3.ecke[2].x-materialDicke,this.grundPlatte3.ecke[2].y-materialDicke)
					);
					  	
	}

	@Override
	public void draw() {
		super.draw();
		servo.draw();
		lowerZahnradLoch.draw();
		upperZahnradLoch.draw();
		super.file4qcad.println(QVector.printLine(cutLineStart, cutLineEnd));
		kabelloch.draw();
		
		zrFreiraumLP1.draw();
		zrFreiraumLP2.draw();
		
		upperGlaettung1.draw();
		upperGlaettung2.draw();
		upperGlaettung3.draw();
		//testCircle.draw();
	}

}
